// CodeGear C++Builder
// Copyright (c) 1995, 2015 by Embarcadero Technologies, Inc.
// All rights reserved

// (DO NOT EDIT: machine generated header) 'ocv.comp.ViewFMX.pas' rev: 30.00 (Windows)

#ifndef Ocv_Comp_ViewfmxHPP
#define Ocv_Comp_ViewfmxHPP

#pragma delphiheader begin
#pragma option push
#pragma option -w-      // All warnings off
#pragma option -Vx      // Zero-length empty class member 
#pragma pack(push,8)
#include <System.hpp>
#include <SysInit.hpp>
#include <System.Classes.hpp>
#include <System.Types.hpp>
#include <System.SyncObjs.hpp>
#include <FMX.Types.hpp>
#include <FMX.Graphics.hpp>
#include <FMX.Controls.hpp>
#include <ocv.comp.Types.hpp>
#include <System.UITypes.hpp>

//-- user supplied -----------------------------------------------------------

namespace Ocv
{
namespace Comp
{
namespace Viewfmx
{
//-- forward type declarations -----------------------------------------------
class DELPHICLASS TocvViewFMX;
//-- type declarations -------------------------------------------------------
class PASCALIMPLEMENTATION TocvViewFMX : public Fmx::Controls::TControl
{
	typedef Fmx::Controls::TControl inherited;
	
private:
	Ocv::Comp::Types::_di_IocvDataSource FocvVideoSource;
	bool FStretch;
	bool FCenter;
	bool FProportional;
	Ocv::Comp::Types::_di_IocvImage FImage;
	Ocv::Comp::Types::TOnOcvAfterViewPaint FOnAfterPaint;
	Ocv::Comp::Types::TOnOcvNotify FOnBeforePaint;
	System::Syncobjs::TCriticalSection* FCS;
	void __fastcall SetOpenCVVideoSource(const Ocv::Comp::Types::_di_IocvDataSource Value);
	bool __fastcall isSourceEnabled(void);
	System::Types::TRectF __fastcall PaintRect(void);
	
protected:
	Fmx::Graphics::TBitmap* BackBuffer;
	virtual void __fastcall Paint(void);
	void __fastcall TakeImage(const Ocv::Comp::Types::_di_IocvImage IplImage);
	void __fastcall SetVideoSource(System::TObject* const Value);
	void __fastcall ImageLock(void);
	void __fastcall ImageUnLock(void);
	
public:
	__fastcall virtual TocvViewFMX(System::Classes::TComponent* AOwner);
	__fastcall virtual ~TocvViewFMX(void);
	void __fastcall DrawImage(const Ocv::Comp::Types::_di_IocvImage IplImage);
	
__published:
	__property Ocv::Comp::Types::_di_IocvDataSource VideoSource = {read=FocvVideoSource, write=SetOpenCVVideoSource};
	__property bool Proportional = {read=FProportional, write=FProportional, default=0};
	__property bool Stretch = {read=FStretch, write=FStretch, default=1};
	__property bool Center = {read=FCenter, write=FCenter, default=0};
	__property Left = {default=0};
	__property Top = {default=0};
	__property Width = {stored=true};
	__property Height = {stored=true};
	__property Align = {default=0};
	__property Ocv::Comp::Types::TOnOcvAfterViewPaint OnAfterPaint = {read=FOnAfterPaint, write=FOnAfterPaint};
	__property Ocv::Comp::Types::TOnOcvNotify OnBeforePaint = {read=FOnBeforePaint, write=FOnBeforePaint};
	__property OnEnter;
	__property OnExit;
	__property OnKeyDown;
	__property OnKeyUp;
	__property OnMouseDown;
	__property OnMouseUp;
	__property OnMouseMove;
	__property OnMouseEnter;
	__property OnMouseLeave;
	__property OnMouseWheel;
	__property HitTest = {default=1};
	__property PopupMenu;
	__property TabOrder = {default=-1};
	__property Visible;
	__property Opacity;
	__property Margins;
	__property Padding;
	__property Position;
private:
	void *__IocvDataReceiver;	// Ocv::Comp::Types::IocvDataReceiver 
	
public:
	#if defined(MANAGED_INTERFACE_OPERATORS)
	// {F67DEC9E-CCE0-49D2-AB9B-AD7E1020C5DC}
	operator Ocv::Comp::Types::_di_IocvDataReceiver()
	{
		Ocv::Comp::Types::_di_IocvDataReceiver intf;
		this->GetInterface(intf);
		return intf;
	}
	#else
	operator Ocv::Comp::Types::IocvDataReceiver*(void) { return (Ocv::Comp::Types::IocvDataReceiver*)&__IocvDataReceiver; }
	#endif
	
};


//-- var, const, procedure ---------------------------------------------------
}	/* namespace Viewfmx */
}	/* namespace Comp */
}	/* namespace Ocv */
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_COMP_VIEWFMX)
using namespace Ocv::Comp::Viewfmx;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV_COMP)
using namespace Ocv::Comp;
#endif
#if !defined(DELPHIHEADER_NO_IMPLICIT_NAMESPACE_USE) && !defined(NO_USING_NAMESPACE_OCV)
using namespace Ocv;
#endif
#pragma pack(pop)
#pragma option pop

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// Ocv_Comp_ViewfmxHPP
